From e54d48be39b29904139ef01e2fa218bafbe60bca Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 16 Dec 2014 10:41:34 -0500 Subject: [PATCH] Add "ostree remote list" command Lists available remote names. --- doc/ostree-remote.xml | 21 +++++++++++-- src/ostree/ot-builtin-remote.c | 56 ++++++++++++++++++++++++++++++++++ tests/test-remote-add.sh | 25 +++++++++++++++ 3 files changed, 100 insertions(+), 2 deletions(-) diff --git a/doc/ostree-remote.xml b/doc/ostree-remote.xml index a9aa9742..add24322 100644 --- a/doc/ostree-remote.xml +++ b/doc/ostree-remote.xml @@ -49,7 +49,7 @@ Boston, MA 02111-1307, USA. - ostree remote OPTIONS add NAME URL BRANCH + ostree remote add OPTIONS NAME URL BRANCH ostree remote delete NAME @@ -57,6 +57,9 @@ Boston, MA 02111-1307, USA. ostree remote show-url NAME + + ostree remote list OPTIONS NAME + @@ -68,7 +71,7 @@ Boston, MA 02111-1307, USA. - Options + 'Add' Options @@ -89,6 +92,20 @@ Boston, MA 02111-1307, USA. + + 'List' Options + + + + + + + Show remote URLs in list + + + + + Example $ ostree remote show-url local diff --git a/src/ostree/ot-builtin-remote.c b/src/ostree/ot-builtin-remote.c index fc7f93ec..aa40122a 100644 --- a/src/ostree/ot-builtin-remote.c +++ b/src/ostree/ot-builtin-remote.c @@ -221,6 +221,61 @@ ostree_remote_builtin_show_url (int argc, char **argv, GCancellable *cancellable return ret; } +static gboolean opt_show_urls; + +static GOptionEntry list_option_entries[] = { + { "show-urls", 'u', 0, G_OPTION_ARG_NONE, &opt_show_urls, "Show remote URLs in list", NULL }, + { NULL } +}; + +static gboolean +ostree_remote_builtin_list (int argc, char **argv, GCancellable *cancellable, GError **error) +{ + GOptionContext *context; + gs_unref_object OstreeRepo *repo = NULL; + gs_strfreev char **remotes = NULL; + guint ii, n_remotes = 0; + gboolean ret = FALSE; + + context = g_option_context_new ("- List remote repository names"); + + if (!ostree_option_context_parse (context, list_option_entries, &argc, &argv, + OSTREE_BUILTIN_FLAG_NONE, &repo, cancellable, error)) + goto out; + + remotes = ostree_repo_remote_list (repo, &n_remotes); + + if (opt_show_urls) + { + int max_length = 0; + + for (ii = 0; ii < n_remotes; ii++) + max_length = MAX (max_length, strlen (remotes[ii])); + + for (ii = 0; ii < n_remotes; ii++) + { + gs_free char *remote_url = NULL; + + if (!ostree_repo_remote_get_url (repo, remotes[ii], &remote_url, error)) + goto out; + + g_print ("%-*s %s\n", max_length, remotes[ii], remote_url); + } + } + else + { + for (ii = 0; ii < n_remotes; ii++) + g_print ("%s\n", remotes[ii]); + } + + ret = TRUE; + + out: + g_option_context_free (context); + + return ret; +} + typedef struct { const char *name; gboolean (*fn) (int argc, char **argv, GCancellable *cancellable, GError **error); @@ -230,6 +285,7 @@ static OstreeRemoteCommand remote_subcommands[] = { { "add", ostree_remote_builtin_add }, { "delete", ostree_remote_builtin_delete }, { "show-url", ostree_remote_builtin_show_url }, + { "list", ostree_remote_builtin_list }, { NULL, NULL } }; diff --git a/tests/test-remote-add.sh b/tests/test-remote-add.sh index 5e1a0eed..cf9720d7 100755 --- a/tests/test-remote-add.sh +++ b/tests/test-remote-add.sh @@ -45,6 +45,24 @@ $OSTREE remote add --if-not-exists --no-gpg-verify another-noexist http://anothe $OSTREE remote show-url another-noexist >/dev/null echo "ok" +$OSTREE remote list > list.txt +assert_file_has_content list.txt "origin" +assert_file_has_content list.txt "another" +assert_file_has_content list.txt "another-noexist" +assert_not_file_has_content list.txt "http://example.com/ostree/gnome" +assert_not_file_has_content list.txt "http://another.com/repo" +assert_not_file_has_content list.txt "http://another-noexist.example.com/anotherrepo" +echo "ok remote list" + +$OSTREE remote list --show-urls > list.txt +assert_file_has_content list.txt "origin" +assert_file_has_content list.txt "another" +assert_file_has_content list.txt "another-noexist" +assert_file_has_content list.txt "http://example.com/ostree/gnome" +assert_file_has_content list.txt "http://another.com/repo" +assert_file_has_content list.txt "http://another-noexist.example.com/anotherrepo" +echo "ok remote list with urls" + $OSTREE remote delete another echo "ok remote delete" @@ -68,3 +86,10 @@ if $OSTREE remote show-url origin 2>/dev/null; then assert_not_reached "Deleting remote unexpectedly failed" fi echo "ok" + +$OSTREE remote list > list.txt +assert_not_file_has_content list.txt "origin" +# Can't grep for 'another' because of 'another-noexist' +assert_file_has_content list.txt "another-noexist" +echo "ok remote list remaining" + -- 2.30.2